﻿/// <reference path="../jquery-3.4.1.min.js" />
/// <reference path="../common.js" />
/// <reference path="../ArrayHelper.js" />

var globalData = {
    WorkDate: null,
    PlaceCode: null,
    TypeCode: null,
    PersonList: null,
    CanUseList: null,
    EditMode: null,
    DayOfWeek: null,
    rtype: 'LoadInfoForScheduleEdit',
};

$(function () {
    DataInit();
    BindEvents();
});


function DataInit() {
    var pDate = getUrlParam('d');
    var pPlace = getUrlParam('p');
    var pType = getUrlParam('t');
    var pMode = getUrlParam('m');

    if ($.isNullOrUndefinedOrEmpty(pMode) || $.isNullOrUndefinedOrEmpty(pPlace)) {
        throw '必须指定编辑模式和值班地点';
        return;
    }

    globalData.EditMode = pMode;

    //加载下拉列表选项
    $('#dataItems').bindMutliCodeDropdownList([1, 2], function () {
        if (!$.isNullOrUndefinedOrEmpty(pDate)) {
            globalData.WorkDate = pDate;
        }
        if (!$.isNullOrUndefinedOrEmpty(pPlace)) {
            globalData.PlaceCode = pPlace;
        }
        if (!$.isNullOrUndefinedOrEmpty(pType)) {
            globalData.TypeCode = pType;
        }

        RefleshUsersInfo();
        /* 
        * 新增的时候
        * 如果是网信办的班，周1-5，锁定为夜班，不能改，值班地点也不能改，只能修改日期，当修改了日期之后，判断是否67，如果是，则默认项为白班，并且可以修改
        * 如果是中心的班，值班类型可以修改，值班地点不能改，日期可以修改
        * 当编辑的时候，日期，值班类型，值班时间都不能修改，避免误操作
        */
        $('#PlaceCode').prop('disabled', true);
        RefleshUIStatus();

    }, '_none');
}

//刷新星期几方法
function RefleshDayofWeek(callback) {
    var dateStr = $.trim($('#WorkDate').val());

    //如果不是清空日期
    if (!$.isNullOrUndefinedOrEmpty(dateStr)) {
        $.rajax('handler/scheduleManagement.ashx', { 'rtype': 'GetDayOfWeekChinese', 'dateValue': dateStr }, function (retobj) {
            //填入星期几
            $('#spanDayOfWeek').text(retobj.data);

            /* 
             * 新增的时候
             * 如果是网信办的班，周1-5，锁定为夜班，不能改，值班地点也不能改，只能修改日期，当修改了日期之后，判断是否67，如果是，则默认项为白班，并且可以修改
             * 如果是中心的班，值班类型可以修改，值班地点不能改，日期可以修改
             * 当编辑的时候，日期，值班类型，值班时间都不能修改，避免误操作
             */

            globalData.DayOfWeek = retobj.data;

            if ($.isFunction(callback)) {
                callback();
            }
        });
    }
    else {
        //清空日期效果
        $('#spanDayOfWeek').text('星期几');
        globalData.DayOfWeek = null;
    }
}

//刷新页面UI状态
function RefleshUIStatus() {

    RefleshDayofWeek(function () {
        if (globalData.EditMode == 0) {
            //新增模式

            //网信办
            if (globalData.PlaceCode == 2 && globalData.DayOfWeek != null && (globalData.DayOfWeek == '星期六' || globalData.DayOfWeek == '星期日')) {
                globalData.TypeCode = 1;//默认白班
                $('#TypeCode').prop('disabled', false);//可选白班夜班
            }
            else if (globalData.PlaceCode == 2 && globalData.DayOfWeek != null && (globalData.DayOfWeek != '星期六' || globalData.DayOfWeek != '星期日')) {
                globalData.TypeCode = 2;//默认夜班
                $('#TypeCode').prop('disabled', true);//不可选白班夜班
            }

                //中心
            else if (globalData.PlaceCode == 1) {
                globalData.TypeCode = 1;//默认白班
                $('#TypeCode').prop('disabled', false);//可选白班夜班
            }
        }
        else {
            //编辑模式

            $('#TypeCode,#PlaceCode,#WorkDate').prop('disabled', true);
        }
    });

}

//刷新人员数据
function RefleshUsersInfo() {
    $('#dataItems').bindData(globalData);
    //console.log(globalData);
    if ($.isNullOrUndefinedOrEmpty(globalData.WorkDate) || $.isNullOrUndefinedOrEmpty(globalData.PlaceCode) || $.isNullOrUndefinedOrEmpty(globalData.TypeCode)) {
        return false;
    }

    var currRtype = 'LoadInfoForScheduleEdit';
    if (globalData.PlaceCode == 2) {
        currRtype = 'LoadInfoForOfficeScheduleEdit';
    }

    var mirror = {
        WorkDate: globalData.WorkDate,
        TypeCode: globalData.TypeCode,
        PlaceCode: globalData.PlaceCode,
        rtype: currRtype,
    };

    //加载数据
    $.rajax('handler/scheduleManagement.ashx', mirror, function (retobj) {

        globalData.CanUseList = retobj.data.freeList;
        globalData.PersonList = retobj.data.usedList;

        //绑定现有人员
        BindUsedTable();

        //绑定人员下拉框
        BindFreePersonList();
    });
}

function BindEvents() {
    //添加按钮
    //$('#btnAddPerson').click(function () {
    //    if ($('#dataTable tbody tr').length == 8) {
    //        top.sysAlert.Error('总人数不能超过8人');
    //        return;
    //    }

    //    var idToAdd = $('#selChoosePerson').select2('val');

    //    var target = globalData.CanUseList.getItemByValue('UserId', idToAdd);
    //    if (target != null) {
    //        if (target.UserId == 'xxx') {
    //            globalData.PersonList = [target];
    //        }
    //        else {
    //            globalData.PersonList.push(target);
    //        }
            
    //        globalData.CanUseList.removeByValue('UserId', idToAdd);
    //        //刷新
    //        BindUsedTable();
    //        BindFreePersonList();
    //    }
    //    else {
    //        top.sysAlert.Error('请选择一个人员选项再添加');
    //    }

    //});

    //取消按钮
    $('#btnCancel').click(function () {
        sysAlert.CloseDialog();
    });

    //保存按钮
    $('#btnSave').click(function () {
        //验证
        if ($.isNullOrUndefinedOrEmpty(globalData.PlaceCode)) {
            top.sysAlert.Error('值班地点不能为空');
        }
        if ($.isNullOrUndefinedOrEmpty(globalData.WorkDate)) {
            top.sysAlert.Error('值班时间不能为空');
        }
        if ($.isNullOrUndefinedOrEmpty(globalData.TypeCode)) {
            top.sysAlert.Error('值班类型不能为空');
        }
        if (!$.isArray(globalData.PersonList)) {
            top.sysAlert.Error('必须从人员选项中至少选择一项');
            return;
        }
        else {
            if (globalData.PersonList.length == 0) {
                top.sysAlert.Error('必须从人员选项中至少选择一项');
                return;
            }

            if (globalData.PlaceCode == 1 && globalData.PersonList.length != 8 && globalData.PersonList[0].UserId != 'xxx') {
                top.sysAlert.Error('中心排班要求每班8人');
                return;
            }
        }

        var postData = $('#dataItems').getData('SaveEditSchedule');
        postData.FinallPersonsId = [];
        for (var i = 0; i < globalData.PersonList.length; i++) {
            var person = globalData.PersonList[i];
            postData.FinallPersonsId.push(person.UserId);
        }

        $.rajax('handler/scheduleManagement.ashx', postData, function (retobj) {
            top.sysAlert.success(retobj.msg);
            parent.RefleshMainList();
            parent.sysAlert.CloseDialog();
            sysAlert.CloseDialog();
        });
    });

    //当修改日期的时候，需要重新加载日期对应的是周几
    $('#WorkDate').on('changeDate', function (ev) {
        console.log('修改日期');
        updateGlobalData();
        RefleshUIStatus();
        RefleshUsersInfo();
    });

    $('#PlaceCode').change(function () {
        updateGlobalData();
        RefleshUsersInfo();
    });

    $('#TypeCode').change(function () {
        updateGlobalData();
        RefleshUsersInfo();
    });

    $("#selChoosePerson").on("select2:select", function () {
        //updateGlobalData();
        //RefleshUsersInfo();
        //RefleshUIStatus();
        console.log('选中人');

        if ($('#dataTable tbody tr').length == 8) {
            top.sysAlert.Error('总人数不能超过8人');
            return;
        }

        var idToAdd = $('#selChoosePerson').select2('val');

        var target = globalData.CanUseList.getItemByValue('UserId', idToAdd);
        if (target != null) {
            if (target.UserId == 'xxx') {
                globalData.PersonList = [target];
            }
            else {
                globalData.PersonList.push(target);
            }

            globalData.CanUseList.removeByValue('UserId', idToAdd);
            //刷新
            BindUsedTable();
            BindFreePersonList();
        }
        else {
            top.sysAlert.Error('请选择一个人员选项再添加');
        }
    });
}

//更新全局变量
function updateGlobalData() {
    globalData.WorkDate = $('#WorkDate').val();
    globalData.TypeCode = $('#TypeCode').val();
    globalData.PlaceCode = $('#PlaceCode').val();
}

//从已用列表中删除
function DeleteOneUsed(delId) {
    var delObj = globalData.PersonList.getItemByValue('UserId', delId);
    globalData.CanUseList.push(delObj);
    globalData.PersonList.removeByValue('UserId', delId);

    //刷新
    BindUsedTable();
    BindFreePersonList();
}

//绑定已用人员列表
function BindUsedTable() {
    var UsedList = globalData.PersonList;

    for (var i = 0; i < UsedList.length; i++) {

        var ro = UsedList[i];
        ro.Oper = '<button type="button" onclick="DeleteOneUsed(\'' + ro.UserId + '\')" class="btn btn-danger">删除</button>';
        if (ro.UserId == 'xxx') {
            ro.UserName = '未安排中心人员';
        }
        ro.AllowPagingId = (i + 1);
    }

    $('#dataTable').bindTable(UsedList);
}

//绑定可用人员列表
function BindFreePersonList() {
    $('#selChoosePerson').html('');
    var FreeList = globalData.CanUseList;

    var finallHtml = '<option value="">请选择</option>'
    for (var i = 0; i < FreeList.length; i++) {
        var item = FreeList[i];

        finallHtml += '<option value="' + item.UserId + '">' + item.UserName + '</option>';
    }

    $('#selChoosePerson').html(finallHtml);
    $('#selChoosePerson').select2();
}





